Designers have attempted to keep microprocessor debugging techniques apace with the faster microprocessors. As a result, these debugging methods have had to undergo recent change. For example, functions that were once a part of separate emulator tools have been integrated into the processor itself. This has alleviated the often difficult task of emulating the various processor types in order to perform simple debugging operations. Most microprocessors are caused to enter a debugging mode through software instructions which are provided to the microprocessor from external memory which is coupled to the microprocessor by a system bus. These software instructions are received by the microprocessor and decoded by a decoder in the microprocessor, and the decoded instruction causes the microprocessor to enter the debugging mode and to perform debugging operations in the manner specified further by the software instructions. This type of microprocessor thus typically requires no extra input or output pins to accommodate these debugging operations because the input and output to/from the microprocessor is through the microprocessor's system bus interface. Thus, this type of microprocessor is generally preferred and may be referred to as an internal programmable debug method.
Some logic devices, such as complex programmable logic devices, have used a different mechanism for entering and performing debugging mode by using a dedicated test port having its own set of dedicated input/output pins on the logic device. One such example is the Joint Test Action Group (JTAG) IEEE 1149.1 Standard which describes a dedicated test port for a logic device. The method of using an external, dedicated test port to debug a logic device may be referred to as an external debug method.
In order to permit users to test a processor without having to purchase specialized debugging tools, it is desirable to offer a microprocessor that offers the advantages of external, dedicated test access port debugging as well as internal programmable methods. Furthermore, it is beneficial to create a microprocessor with an open architecture, so that a user may select from a broad range of microprocessor debugging standards, be it JTAG or internal programmable method or any other standard.